Nearly all forms of electronic communication and storage systems use error-correcting codes. Error correcting codes compensate for the intrinsic unreliability of information transfer in these systems by introducing redundancy into the data stream. The mathematical foundations of error correcting were established by Shannon. Shannon developed the mathematical concept of the channel in which distortion of signals in communications systems is modeled as a random process. The most fundamental result of Shannon is the Noisy channel theorem, which defines for the channel a capacity, a quantity that specifies the maximum rate at which information can be reliably delivered through the channel. This capacity is known as Shannon capacity. Reliable transmission at rates approaching capacity requires the use of error correcting codes. Thus, error-correcting codes are designed to achieve sufficient reliability while approaching capacity as closely as possible. The complexity of implementing the error correcting code is an additional factor that comes into play in practical applications of error correcting codes.
Recent advances in error correcting coding systems resulting from the invention of turbo codes and the subsequent rediscovery and development of low-density parity-check (LDPC) codes offer coding systems of feasible complexity that can approach Shannon's capacity quite closely.
Many kinds of error correcting coding systems rely on soft information. Soft information usually represents a decision on a bit b, i.e., a 1 or a 0, and some measure of the reliability of that decision. For example, a canonical form often used for soft values is the log-likelihood ratio log
      p    ⁡          (                        y          ❘          b                =        0            )            p    ⁡          (                        y          ❘          b                =        1            )      where y is some observation of the bit b, e.g., after transmission through a communications channel. Soft input values to a decoder are often obtained from a signal transmitted through a communication channel which may subject the transmitted signal to noise. In such a case, the measure of the reliability of the decision which produced the soft value will reflect the effect of channel noise.
If one uses Binary Phase Shift Key (BPSK) modulation, x=2b−1, to transmit a bit through a Gaussian channel, modeled by y=x+n where n denotes a real Gaussian random variable with 0 mean and variance s2, then y is equal to the log-likelihood ratio of x up to a constant factor. More precisely, log
            p      ⁡              (                              y            ❘            x                    =          1                )                    p      ⁡              (                              y            ❘            x                    =                      -            1                          )              =            2              s        2              ⁢          y      .      For some types of error-correcting systems such as convolutional codes with Viterbi decoding, it is not necessary to know the scale factor
  2      s    2  since the decoding is invariant under scaling by positive constants. This is because, in effect, the Viterbi decoder finds the codeword (x1, . . . , xn) that maximizes x1y1+x2y2+ . . . +xnyn where y1, . . . , y2 denote observations corresponding to the transmitted bits x1, . . . , xn.
Recently, turbo codes and LDPC codes have been shown to offer significant gains over traditional coding systems such as convolutional codes. The best decoders for these codes, however, do depend on the scaling of the soft values. Inaccurate scaling of soft values can negatively impact decoding performance.
Often in practice it is very difficult to know or estimate the correct scaling factor. This is because unknown scaling of data, that is not easy to track, may occur in the system. Such data scaling which is difficult to track may be performed, e.g., by automatic gain control circuitry or other circuitry. This may be especially true, for example, in fading channels where the channel applies a, possibly unknown or only approximately known, multiplicative gain to x. Using a poor estimate of the correct scaling factor can lead to significant degradation of the coding system's performance. Thus, there is a need for a method that can provide a scale factor for a block of soft data, e.g., a set of soft input values, so that the decoding performance does not suffer a loss, or, minimizes the loss suffered, relative to the case where the correct scaling factor is known. From an implementation standpoint it would be highly desirable if a suitable scale factor could be determined from the soft values to be processed without the need to track scaling and/or various channel conditions that can affect the size of the scale factor which should be applied to soft values prior to decoding.